﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DmxLib
{
    public interface IDmxSend:IDisposable,System.ComponentModel.INotifyPropertyChanged
    {
        /// <summary>
        /// 更新缓存的数据
        /// </summary>
        /// <param name="dm512">长度为0-512 值为0-255的数据包</param>
        void UpdateData(byte[] dmxval);
        /// <summary>
        /// 按索引更新  索引0-511
        /// </summary>
        /// <param name="index">索引</param>
        /// <param name="value">值</param>
        void UpdateData(int index, byte value);
        /// <summary>
        /// 按起始位置更新数据 超出不更新
        /// </summary>
        /// <param name="startIndex"> 缓存数组的起始位置</param>
        /// <param name="value">数据索引</param>
        void UpdateData(int startIndex, byte[] dmxval);
        /// <summary>
        /// 按起始位置结束更新数据 超出不更新 更新目标数组的起始结束位置
        /// </summary>
        /// <param name="value">需要更新的数组</param>
        /// <param name="startIndex">缓存数组的起始位置</param>
        /// <param name="endIndex">需要更新原数组的长度</param>
        void UpdateData(byte[] dmxval, int startIndex, int count);
        /// <summary>
        /// 是否启动
        /// </summary>
        bool IsStart { get; }
        /// <summary>
        /// 启动 按帧率发送数据
        /// </summary>
        void Start();
        /// <summary>
        /// 停止
        /// </summary>
        void Stop();
    }
}
